import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.List;
/**
 * Subclase de Flecha. se mueve diferente a la flehca de madera.
 * 
 * @author Gabriel
 * @version 1.0
 */
public class Fmetal extends Flecha
{
   /**
    * variable que da el vector a la flecha.
    */
    public Vector fuerza;
    /**
     * Constructor de la clase Fmetal.
     */
    public Fmetal()
    {
        fuerza = new Vector();
    }
     /**
     * Constructor de la clase Fmetal.
     */
    public Fmetal(Vector fuerza)
    {
        this.fuerza = fuerza;
    }

    /**
     * El metodo act es difernete al de Fmadera ya que esta tiene una trayectoria mas horizontal.
     */
    public void act() 
    {
              
        fuerza.agrega(new Vector(90, .3));   //agrega un vetor.
        GreenfootImage thisImage = getImage();
        World world = getWorld();
        List<Puntos> puntos = world.getObjects(Puntos.class);
        Puntos pts = puntos.get(0);
        
        if(super.choque()==true){ //si no impacto estos objetos
            setLocation(getX()+(int)fuerza.getX(), getY()+(int)fuerza.getY());    
            setRotation(fuerza.getDirection());
        }
        else
        {
            if(getOneIntersectingObject(Enemigo.class)!=null)  //si impacto un enemigo
            {
                super.chocaEnemigo(this);
                world.removeObject(this);
            }
            else if(getOneIntersectingObject(Blanco.class) != null){  //si impacto un blanco
                 Greenfoot.playSound("impact.wav");
                 Greenfoot.delay(12);
                 pts.checkPts(getY());    //se checan los puntos.
                 world.removeObject(this);   //se elimina la flecha
            }
            else if(getOneIntersectingObject(Falso.class)!=null){   // si le dio a uno falso
                Falso f = (Falso)getOneIntersectingObject(Falso.class);
                Greenfoot.playSound("impact.wav");
                world.addObject(new Explosion(),getX(),getY());    // se añanade una explosion.
                List<Explosion> ex = world.getObjects(Explosion.class);
                Greenfoot.delay(12);
                world.removeObjects(ex);
                world.removeObject(this);   //se remueve la flecha
                world.removeObject(f);
            }
            else{
                setLocation(getX()+(int)fuerza.getX(), getY()+(int)fuerza.getY());
                setRotation(fuerza.getDirection());
            }
        }
    }
}
